
const myBaseUrl = 'http://10.225.215.97:80';
// // // 单词知识点推荐阅读接口（流式版本）
// import { http } from '@kit.NetworkKit';
//
// // import axios, { AxiosRequestConfig, AxiosResponse, AxiosError, AxiosProgressEvent } from '@ohos/axios';
// // const myBaseUrl = 'http://10.225.215.97:80';
// //
// // // 定义流式数据回调接口
// // interface StreamCallbacks {
// //   onDataReceived: (chunk: string) => void; // 接收数据块
// //   onError: (error: string) => void;        // 错误处理
// //   onComplete?: () => void;                 // 流完成（可选）
// // }
// //
// // export async  function getRecReading(
// //   word: string,
// //   callbacks: StreamCallbacks
// // ): Promise<void> {
// //   // 配置请求参数（严格匹配文档泛型定义）
// //   const config: AxiosRequestConfig = {
// //     method: 'post',
// //     url: myBaseUrl + '/api/streamConsult',
// //     data: { word: word }, // 必须通过 data 传递 POST 请求体
// //     headers: {
// //       'Content-Type': 'application/json', // 与后端 express.json() 中间件匹配
// //     },
// //     responseType: 'string', // 明确指定响应类型为字符串（文档要求）
// //     onDownloadProgress: (progressEvent: AxiosProgressEvent) => {
// //       // 处理流式数据分片（需手动拼接）
// //       const chunk = (progressEvent.event?.target as any)?.response || '';
// //       if (chunk) {
// //         // 简单处理 SSE 格式（根据实际接口调整）
// //         const dataChunk = chunk.replace(/^data:\s*/, '').trim();
// //         callbacks.onDataReceived(dataChunk);
// //       }
// //     }
// //   };
// //
// //   // 发起请求（使用明确泛型参数）
// //   await axios.post<string, AxiosResponse<string>, Record<string, string>>(
// //     config.url!,
// //     config.data,
// //     config
// //   ).then((res: AxiosResponse) => {
// //     callbacks.onComplete?.(); // 可选：流结束时触发
// //   }).catch((err: AxiosError) => {
// //     callbacks.onError(err.message);
// //   });
// // }
//
//
//
// import axios, { AxiosRequestConfig, AxiosResponse, AxiosError, AxiosProgressEvent } from '@ohos/axios';
// const myBaseUrl = 'http://10.225.215.97:80';
//
// // 定义流式数据回调接口
// interface StreamCallbacks {
//   onDataReceived: (chunk: string) => void; // 接收数据块
//   onError: (error: string) => void;        // 错误处理
//   onComplete?: () => void;                 // 流完成（可选）
// }
//
// export async function getRecReading(
//   word: string,
//   callbacks: StreamCallbacks
// ): Promise<void> {
//   // 配置请求参数（严格匹配文档泛型定义）
//   const config: AxiosRequestConfig = {
//     method: 'post',
//     url: myBaseUrl + '/api/streamConsult',
//     data: { message: word }, // 修改为后端期望的字段名 message
//     headers: {
//       'Content-Type': 'application/json', // 与后端 express.json() 中间件匹配
//     },
//     responseType: 'string', // 修改为 stream 类型以支持流式处理
//     onDownloadProgress: (progressEvent: AxiosProgressEvent) => {
//       // 处理流式数据分片（需手动拼接）
//       const chunk = (progressEvent.event?.target as any)?.response || '';
//       if (chunk) {
//         // 简单处理 SSE 格式（根据实际接口调整）
//         const dataChunk = chunk.replace(/^data:\s*/, '').trim();
//         callbacks.onDataReceived(dataChunk);
//       }
//     }
//   };
//
//   // 发起请求（使用明确泛型参数）
//   await axios.post<string, AxiosResponse<string>, Record<string, string>>(
//     config.url!,
//     config.data,
//     config
//   ).then((res: AxiosResponse) => {
//     console.log('res', res.data);
//     callbacks.onComplete?.(); // 可选：流结束时触发
//   }).catch((err: AxiosError) => {
//     callbacks.onError(err.message);
//   });
// }


// // 单词知识点推荐阅读接口（流式版本）
import { http } from '@kit.NetworkKit';
import axios from '@ohos/axios';
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit';

// import axios, { AxiosRequestConfig } from '@ohos/axios';
// const myBaseUrl = 'http://10.225.215.97:80';
//
// interface StreamCallbacks {
//   onDataReceived: (chunk: string) => void;
//   onError: (error: string) => void;
//   onComplete?: () => void;
// }
//
// export async function getRecReading(
//   word: string,
//   callbacks: StreamCallbacks
// ): Promise<void> {
//
//   const config: AxiosRequestConfig = {
//     method: 'post',
//     url: myBaseUrl + '/api/streamConsult',
//     data: { message: word }, // 必须与后端字段名一致
//     headers: {
//       'Content-Type': 'application/json',
//     },
//     responseType: 'string', // 修改为 text 类型
//     onDownloadProgress: (progressEvent) => {
//       // 获取原始响应文本（累积数据）
//       const chunk = progressEvent.event.target.response;
//       console.log('Stream chunk received:', chunk);
//       // if (chunk) {
//       //   // 按换行分割处理 SSE 格式
//       //   const chunks = rawData.split('\n');
//       //   chunks.forEach(chunk => {
//       //     // if (chunk.trim()) {
//       //     //
//       //     //   // callbacks.onDataReceived(chunk);
//       //     // }
//       //     console.log('Stream chunk received:', chunk);
//       //     // callbacks.onDataReceived(chunk.trim());
//       //     callbacks.onDataReceived(chunk);
//       //   });
//       // }
//     }
//   };
//
//   try {
//     await axios.post(config.url!, config.data, config);
//     callbacks.onComplete?.();
//   } catch (err) {
//     callbacks.onError(err.message);
//   }
// }

function testNetworkOutputQueue() {
  // 创建同步读队列对象
  const NetworkOutputQueue = rcp.NetworkOutputQueue;
  const networkOutputQueue = new NetworkOutputQueue();
  // 创建session
  const session = rcp.createSession();
  // 配置请求流数据size
  const numOfChunks = 10;
  const chunkLength = 1000;
  const totalBytes = numOfChunks * chunkLength;
  // 发起同步读请求
  session.post(myBaseUrl+'/api/streamConsult' + totalBytes.toString(), networkOutputQueue)
    .then((resp: rcp.Response) => {
      // 分段读取请求到的数据
      for (let i = 0; i < numOfChunks; i++) {
        // 开发者需要根据实际场景处理后续业务
        const chunk = networkOutputQueue.read(chunkLength);
        console.info(`The chunk is ${JSON.stringify(chunk)}`)
      }
      console.info(`Response succeeded, ${resp}`)
    }).catch((err: BusinessError) => {
      console.error(`Response failed, error code is ${err.code}, error message is ${JSON.stringify(err)}`)
    }).finally(() => {
      // 关闭session
      session.close();
    });
}








